What is User and Group in linux system?
리눅스 운영체제는 기본적으로 여러 명의 유저가 동시에 접속하여 각자 다른 작업을 수행하여도 잘 동작하도록 설계되었다.
때문에, 여러 사용자가 각자 프로그램을 제어할때 서로 같은 시스템 자원을 사용하게 되어 생기는 문제를 핸들링 해야 할 필요가 생기게 되었는데, 그러한 권한관리 시스템을 구성하는 개념이 user 와 group 이며, 여기서 permission의 개념이 등장한다.
때문에 각 파일과 디렉토리는 유저별로 할당된 권한이 있으며 이를 확인하는 명령어는 다음과 같다.
1 | ls -l <file or directory> |
위 명령어를 입력하면 다음과 같은 결과가 출력되는데
1 | -rw-r--r-- 1 root root 1031 Nov 18 09:22 /etc/passwd |
여기서 첫번째 -
표시는 해당 파일 혹은 디렉토리가 파일임을 나타내고 만약 두번째처럼 d 로 시작한다면 디렉토리를 나타낸다.
뒤이어 오는 rw-, r–, r– 는 각각 파일의 소유자와 같은 그룹의 유저들 그리도 나머지 유저들에 대한 권한을 나타낸다.
r 은 read
w 는 write
x 는 executre
로써 각각 읽기, 쓰기, 실행하기의 권한을 나타낸다.
Create and Delete User Accounts
1 | useradd <name> -d /home/<user's home> -e <YYYY-MM-DD> -f <0 or -1> - s /bin/<shell> |
위처럼 유저를 생성 할 수 있으며, d, e, f, s 의 옵션과 내용은 각각 해당 유저의 로그인시 홈 디렉토리, 유효기간, 유효일자, 기본 shell type 을 의미한다.
이렇게 유저를 생성하며, 누구나 해당 유저에 접근하여 사용할 수 있기 때문에, 실제 사용시에는 다음과 같이 비밀번호를 설정해 주어야 한다.
1 | passwd <username> |
Understanding Sudo
이렇게 기본 유저의 경우 각 파일과 디렉토리 별로 권한이 있기 때문에, 활동이 상당히 제한적일 수밖에 없다.
이 때문에, 컴퓨터 시스템을 조작하거나 기타 여러 작업을 수행하기 위해서는 sudo
명령어와 같이 시스템의 루트 권한을 가져오는 명령어가 필요한 경우가 종종 있다.
이러한 sudo
명령어는 대부분의 운영체제에 기본으로 설치되어 있지만 없는 경우 다음과 같이 설치해 준다.
1 | # in ubuntu os |
이런 sudo 명령어는 허가된 사용자에 대해서만 사용이 가능하기 때문에 이 리스트를 sudoer
라는 파일을 통해 관리하게 된다. sudoer 파일은 매우 중요한 파일이기 때문에 텍스트 에디터에서 접근하면 치명적인 에러와 접속 불가 상태에 빠질수 있기 때문에 visudo 와 같은 별도 명령어를 사용한다.
visudo
1 | # User privilege specification |
Working with groups
리눅스는 유저들을 관리하기 위해 group 이라는 개념을 사용하며 그 그룹들은 /etc/group/
파일에서 관리되며, 이 파일에는 어떤 그룹에 어떤 유저들이 포함되어 있는지 명시되어 있다.
다음 명령어를 통해 그룹을 생성하고 변경할 수 있다.
1 | newgrp <group> |
Chmod Command
이렇게 설정된 permission 을 간편하게 변경하기 위한 명령어로 chmod
명령어가 있으며 그 사용법은 다음과 같다.
앞서 설명한 것처럼 파일 혹은 디렉토리의 권한은 rwx 와 같은 형태로 표현되며 모든 권한이 없는 상태는 — 와 같다.
이렇게 모든 권한이 있는 상태와 없는 상태를 2진 표기법으로 3자리로 나타내며, 이를 8진수로 표기하여 다음과 같이 설정할 수 있다.
1 | chmod 400 ./example |
위 명령어는 example 이라는 파일의 권한을 r--------
로 변경하는 명령어이다.
또 아래와 같은 간편한 명령어도 존재하는데
1 | chmod +t ./example |
해당 명령어는 sticky bit 라 불리며 자신이 속한 그룹 내에서도 오직 자신만이 해당 파일의 삭제권한을 가지도록 할 수 있다.
이는 여러 사용자로 구성된 그룹에서 간편하게 자신만이 삭제권한을 가지게 할 수 있어 매우 편리하다.
터미널 명령어 조합
8080포트에 붙은 프로세스 죽임
fuser -k 8080/tcp
가상 터미널(screen의 활용)
screen -S 세션명
-S 다음에 주는 세션명으로 시작합니다.
screen -list
-list 옵션을 주고 실행하면 이전에 작업했었던 screen 리스트가 있으면 세션명과 함께 리스트를 보여줍니다.
screen -R 세션명
이전에 세션이 있을 경우 -R 다음에 오는 세션명으로 이전 작업을 불러옵니다.
-R 다음에 세션명을 주지 않았을 경우에는 이전 세션이 한개만 있을 경우 그 작업을 불러옵니다.
이전 작업이 여러개 있을 경우에는 이전 작업 리스트를 보여줍니다.
세션명을 가진 세션이 없다면 새로운 세션을 만들어서 보여줌.
(안만들려면 소문자 -r을 사용할 것)
screen -D -r 세션명
이전 세션이 Attach 된 상태라면 Detach하고 세션을 복원해 줌.
Comments